package DAO;

import java.util.List;

import com.sel.modelo.Campi;

import android.content.ContentValues;
import android.content.Context;

/**
 * 08-05-2015.
 * @version 1.2
 * @author Guilherme Araujo
 */
public class CampiDAO extends DAOGeneric<Campi>{


    public static final String    TABELA = "campi";
    public static final String[] COLUNAS = {"idcampi", "faculdade_idFaculdade", "nome_Campi", "rua_Campi", "numero_Campi", "bairro_Campi", "cidade_Campi"};
    public static final String SCRIPT_CRIACAO_TABELA_CAMPI = "CREATE TABLE "+TABELA+"( " +
                                                                COLUNAS[0]+" INTEGER PRIMARY KEY," +
                                                                COLUNAS[1]+" INTEGER," +
                                                                COLUNAS[2]+" TEXT, " +
                                                                COLUNAS[3]+" TEXT, " +
                                                                COLUNAS[4]+" INTEGER, " +
                                                                COLUNAS[5]+" TEXT, " +
                                                                COLUNAS[6]+" TEXT" +
                                                                ");";
    public static final String SCRIPT_DELECAO_TABELA_CAMPI = "DROP TABLE IF EXISTS "+TABELA;
    
    public static CampiDAO instance;
    ContentValues contentValues;
    public static CampiDAO getInstance(Context context) 
    {
        if(instance == null)
        {
            instance = new CampiDAO(context);
        }
        return instance;
    }

    public CampiDAO(Context context) 
    {
        super(context);
    }

    @Override
    public String getNomeColunaPrimaryKey() 
    {
        return COLUNAS[0];
    }

    @Override
    public String getNomeTabela() 
    {
        return TABELA;
    }

    @Override
    public ContentValues entidadeParacontentValues(Campi campi) 
    {
        ContentValues values = new ContentValues();
        if (campi.getId()> 0)
        {
            values.put(COLUNAS[0], campi.getId());
        }
        values.put(COLUNAS[1], campi.getnome_Faculdade());
        values.put(COLUNAS[2], campi.getnome_Campi());
        values.put(COLUNAS[3], campi.getrua_Campi());
        values.put(COLUNAS[4], campi.getNumero_Campi());
        values.put(COLUNAS[5], campi.getbairro_Campi());
        values.put(COLUNAS[6], campi.getcidade_Campi());
        return values;
    }

    @Override
    public Campi contentValuesParaEntidade(ContentValues contentValues) 
    {
        Campi campi = new Campi();
        this.contentValues = contentValues;
        campi.setId(contentValues.getAsInteger(COLUNAS[0]));
        campi.setnome_Faculdade(contentValues.getAsInteger(COLUNAS[1]));
        campi.setnome_Campi(contentValues.getAsString(COLUNAS[2]));
        campi.setrua_Campi(contentValues.getAsString(COLUNAS[3]));
        campi.setNumero_Campi(contentValues.getAsInteger(COLUNAS[4]));
        campi.setbairro_Campi(contentValues.getAsString(COLUNAS[5]));
        campi.setcidade_Campi(contentValues.getAsString(COLUNAS[6]));
        return campi;
    }

     /**
     * Busca o nome dos campis para tratamento.
     * @param id 
     * @return List
     */
    public String buscaNomeCampi(int idCampi, int id) 
    {
        String nomeCampi = "";
        String query = "SELECT * " +
                         "FROM campi " +
                   "INNER JOIN usuario " +
                           "ON usuario.campi_idcampi = campi.idcampi " +
                        "WHERE idcampi = "+ idCampi
                        +" AND usuario.id_Usuario = "+id;
        List<Campi> campi =  super.recuperarPorQuery(query);
        for (Campi campis : campi) 
        {
            nomeCampi = campis.getnome_Campi();
        }
        this.fecharConexao();
        return nomeCampi;
    }
    
    /**
     * Busca o nome dos campis para tratamento.
     * @param id 
     * @return List
     */
    public String buscaNomeCampiPorId(int idCampi) 
    {
        String nomeCampi = "";
        String query = "SELECT * " +
                         "FROM campi " +
                        "WHERE idcampi = "+ idCampi;
        List<Campi> campi =  super.recuperarPorQuery(query);
        for (Campi campis : campi) 
        {
            nomeCampi = campis.getnome_Campi();
        }
        this.fecharConexao();
        return nomeCampi;
    }
}
